home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Trusted Irix /B 4.0.4
/
Trusted-Irix B-4.0.1.iso
/
dist
/
eoe1.idb
/
usr
/
include
/
sys
/
IP5.h.z
/
IP5.h
Wrap
C/C++ Source or Header
|
1992-04-03
|
6KB
|
153 lines
/**************************************************************************
* *
* Copyright (C) 1987, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/*
* IP5.h -- cpu board specific defines for IP5
*/
#ifndef __SYS_IP5_H__
#define __SYS_IP5_H__
#ident "$Revision: 1.86 $"
#if !LOCORE
#include "sys/types.h"
#endif !LOCORE
/*
* IP5/7/9 CPU Board Addresses
*/
#define THREEWAY_TADDR 0xb8000000 /* 3-way transfer trigger (IP7) */
#define LOCK_ADDR 0xbe000000 /* Lock array */
#define U_LOCK_ADDR 0xbe200000 /* Users' portion of lock array */
#define SBCC_ADDR 0xbe400000 /* SBCC chip */
#define LOCK_DIAGADDR 0xbec00000 /* Diagnostics lock array. */
#define U_LOCK_DIAGADDR 0xbee00000 /* Users' portion of " " " */
#define MPSR_ADDR 0xbf000000 /* MP status register */
#define SBE_ADDR 0xbf080000 /* Clear bus error interrupt */
#define TIM0_ACK_ADDR 0xbf100000 /* Clear T0 interrupt */
#define TIM1_ACK_ADDR 0xbf180000 /* Clear T1 interrupt */
#define LED_ADDR 0xbf200001 /* LED register */
#define PT_CLOCK_ADDR 0xbf600000 /* Timer chip */
#define DUART0_ADDR 0xbf800000 /* Keyword/mouse DUART */
#define DUART1_ADDR 0xbfa00000 /* Second DUART */
#define DUART2_ADDR 0xbf400000 /* Third DUART (IP9 only) */
#define EPROM_ADDR 0xbfc00000 /* EPROM */
#define THREEWAY 0xbfe00000 /* 3-way transfer trigger (IP5) */
#define THREEWAY_STAT1 0xbfe00000 /* 3-way transfer status reg (IP7/9) */
#define THREEWAY_STAT2 0xbfe00010 /* 3-way transfer status reg (IP7/9) */
#define THREEWAY_STATUS THREEWAY_STAT1 /* 3-way transfer status reg (IP7/9) */
#define DIRECT_MEM 0xb0000000 /* 32Mb of phys mem */
#define IP7SDATA_ADDR 0xbc000000 /* 2nd level cache data */
#define IP7STAG_BASE_ADDR 0xbc800004 /* 2nd level cache tag/state */
#define IP7STAG_END_ADDR 0xbc83fff4 /* 16K tag for IP7 */
#define IP15STAG_END_ADDR 0xbc8ffff4 /* 64K tag for IP15 */
#define DCACHETAG_ADDR 0xbf400000 /* 2nd level dcache state/tag */
#define STAG_BASE_ADDR 0xbf400000 /* 2nd level cache tag address */
#define STAG_END_ADDR 0xbf40fff0 /* 4K tag for IP5 */
#define TOPMEM 0xf0000000 /* back door memory */
/* bit values of 2nd level cache tag - bottom 12 bits are physical pfn */
#define INVALID 0x3000
#define VAL 0x2000
#define SHARED 0x1000
#define DIRTY 0x0000
/* instruction read buffer IP5 only */
#define IBTAG_ADDR 0xbc800000
#define IB_WORD0 0xbd000000
#define IB_WORD1 0xbd000004
#define IB_WORD2 0xbd800008
#define IB_WORD3 0xbd80000c
/* MP Status Register bits for IP5 */
#define MPSR_BEI 0x800 /* MP bus error interrupt pending = 0 */
#define MPSR_BETMASK 0x700 /* MP bus error type */
#define MPSR_3WAY 0x080 /* 3-way trigger status */
/* MP Status Register bits for IP7/9 */
#define IP7MPSR_BEI 0x80000 /* MP bus error interrupt pending = 0 */
#define IP7MPSR_BETMASK 0x70000 /* MP bus error type */
#define IP7MPSR_MASK 0xf007f /* only keep interesting bits */
/* MP Status Register bits for IP5/7/9 */
#define MPSR_MASK 0xfff /* its only 12 bits */
#define MPSR_T1 0x0040 /* T1 interrupt pending == 1 */
#define MPSR_T0 0x0020 /* T0 interrupt pending == 1 */
#define MPSR_FP 0x0010 /* FP chip present == 0 */
#define MPSR_IDMASK 0x0007 /* MP bus ID# */
#define MPSR_IP5MASK 0x0008 /* x0 for IP5 */
#define MPSR_IP7MASK 0x0088 /* 08 for IP7 */
#define MPSR_IP9MASK 0x00f00088 /* 88 for IP9 */
#define MPSR_IP5BRD 0x0000 /* x0 for IP5 */
#define MPSR_IP7BRD 0x0008 /* 08 for IP7 */
#define MPSR_IP9BRD 0x0088 /* 88 for IP9 */
/* Note - 0xX088 for future IP's */
/* MP Bus error types for IP5 */
#define MPSR_BESHIFT 8
#define BE_TYPE(x) ((x) << MPSR_BESHIFT)
#define BE_SDR BE_TYPE(0) /* 2nd data cache fill (R) */
#define BE_SDW BE_TYPE(1) /* 2nd data cache fill (W) */
#define BE_3WAY BE_TYPE(2) /* 3-way transfer */
#define BE_IBUF BE_TYPE(3) /* instruction buffer fill */
#define BE_IOWACK BE_TYPE(4) /* MPIO WACK error responce */
#define BE_IOEACK BE_TYPE(5) /* MPIO EACK */
/* MP Bus error types for IP7/9 */
#define IP7MPSR_BESHIFT 16
#define IP7BE_TYPE(x) ((x) << IP7MPSR_BESHIFT)
#define IP7BE_NBREAD IP7BE_TYPE(0) /* non block read */
#define IP7BE_SDW IP7BE_TYPE(1) /* 2nd data cache fill (W) */
#define IP7BE_3WAY IP7BE_TYPE(2) /* 3-way transfer */
#define IP7BE_BLOCKI IP7BE_TYPE(3) /* block instruction */
#define IP7BE_IOWACK IP7BE_TYPE(4) /* MPIO WACK error responce */
#define IP7BE_IOEACK IP7BE_TYPE(5) /* MPIO EACK */
#define IP7BE_BDREAD IP7BE_TYPE(6) /* block data read */
/* bits defined for THREEWAY (IP7/9) */
#define THREEWAY_START_TRIG 0x4
#define THREEWAY_END_TRIG 0x2
#define THREEWAY_SAVED_A4 0x1
/* LED Register bits */
#define LED_3WAY 0x80 /* 3 Way disable bits */
#define LED_MASK 0x7f /* actual value */
/* Hardware lock entry */
#define LOCK_NUMPAGES 1024 /* number of pages of locks */
#define LOCK_NUMKPAGES 512 /* number of kernel pages of locks */
#define LOCK_NUMUPAGES 512 /* number of user pages of locks */
#define LOCK_PERPAGE 64 /* number of locks per page */
#define LOCK_TAKEN 0x1 /* least significant bit of value */
#define CAUSE_BERRINTR CAUSE_IP8 /* Bus error intr. */
#define TLBLO_HWBITS 0x3fffffff /* 24 bit ppn, CDVG */
#define TLBLO_HWBITSHIFT 2 /* A shift value, for masking */
#define SR_BERRBIT SR_IBIT8
#define dcache_wb(X,Y)
#define dcache_wbinval(X,Y) dcache_inval(X,Y)
#include "sys/clover2.h"
#endif /* __SYS_IP5_H__ */